package domain;

import java.util.Iterator;
import java.util.List;
import data.IProyectoUsuarioDAO;
import data.IUsuarioDAO;
import data.JDBCProyectoUsuarioDAO;
import data.JDBCUsuarioDAO;

public class UsuarioStore {
	private static UsuarioStore us;
	private List<Usuario> usuarios;
	
	private IUsuarioDAO udao = new JDBCUsuarioDAO();
	private IProyectoUsuarioDAO pudao = new JDBCProyectoUsuarioDAO();
	
	public static synchronized UsuarioStore getInstance() {
		if (us == null)
			us = new UsuarioStore();
		return us;
	}
	
	private UsuarioStore(){
		usuarios = (new JDBCUsuarioDAO().selectAllUsuarios());
	}
	
	public List<Usuario> getUsuarios(){
		return usuarios;
	}

	public Usuario getUsuario(String nick){
		Usuario u = null;
		Iterator<Usuario> it = usuarios.iterator();
		boolean enc = false;
		
		while (it.hasNext() && !enc){
			u = (Usuario) it.next();
			if (u.getNick().equals(nick)){
				enc = true;
			}
		}
		return u;
	}
	
	public Usuario getUsuarioID(String usuarioID){
		Usuario u = null;
		Iterator<Usuario> it = usuarios.iterator();
		boolean enc = false;
		
		while (it.hasNext() && !enc){
			u = (Usuario) it.next();
			if (u.getUsuarioID().equals(usuarioID)){
				enc = true;
			}
		}
		return u;
	}
	
	public void insertarUsuario(Usuario user){
		udao.insertUsuario(user);
	}
	
	public void borrarUsuario(String usuarioID){
		udao.deleteUsuario(usuarioID);
	}
	
	public Usuario seleccionarUsuario(String usuarioID){
		return udao.selectUsuario(usuarioID);
	}
	
	public List<Usuario> seleccionarUsuarios(){
		return udao.selectAllUsuarios();
	}
	
	public List<ProyectoUsuario> seleccionarUsuariosDeUnProyecto(String proyectoID){
		return pudao.selectAllUsuarios(proyectoID);
	}
}